#pragma once

#ifndef MILLINGFACTORY_H
#define MILLINGFACTORY_H

#include <uf_defs.h>
#include <NXOpen/NXException.hxx>
#include <NXOpen/Session.hxx>
#include <NXOpen/UI.hxx>
#include <NXOpen/Selection.hxx>
#include <NXOpen/Axis.hxx>
#include <NXOpen/BasePart.hxx>
#include <NXOpen/Body.hxx>
#include <NXOpen/BodyCollection.hxx>
#include <NXOpen/BodyDumbRule.hxx>
#include <NXOpen/Builder.hxx>
#include <NXOpen/CAM_AcrossVoids.hxx>
#include <NXOpen/CAM_ArcOutputTypeCiBuilder.hxx>
#include <NXOpen/CAM_Boundary.hxx>
#include <NXOpen/CAM_BoundarySet.hxx>
#include <NXOpen/CAM_BoundarySetList.hxx>
#include <NXOpen/CAM_CAMObject.hxx>
#include <NXOpen/CAM_CAMSetup.hxx>
#include <NXOpen/CAM_CavityMilling.hxx>
#include <NXOpen/CAM_CavityMillingBuilder.hxx>
#include <NXOpen/CAM_CleanupOutput.hxx>
#include <NXOpen/CAM_CleanupSettings.hxx>
#include <NXOpen/CAM_CornerControlBuilder.hxx>
#include <NXOpen/CAM_CustomLoopSet.hxx>
#include <NXOpen/CAM_CustomLoopSetList.hxx>
#include <NXOpen/CAM_CustomLoops.hxx>
#include <NXOpen/CAM_CutAngle.hxx>
#include <NXOpen/CAM_CutDirection.hxx>
#include <NXOpen/CAM_CutLevel.hxx>
#include <NXOpen/CAM_CutParameters.hxx>
#include <NXOpen/CAM_CutPatternBuilder.hxx>
#include <NXOpen/CAM_CutVolumeGeom.hxx>
#include <NXOpen/CAM_CutterExport.hxx>
#include <NXOpen/CAM_Cycle.hxx>
#include <NXOpen/CAM_DisplayPaint.hxx>
#include <NXOpen/CAM_DisplayPath.hxx>
#include <NXOpen/CAM_DisplaySilhouette.hxx>
#include <NXOpen/CAM_DisplayTool.hxx>
#include <NXOpen/CAM_ExtendAtEdges.hxx>
#include <NXOpen/CAM_FeedsBuilder.hxx>
#include <NXOpen/CAM_FeedsOptimizationData.hxx>
#include <NXOpen/CAM_FinishPassesBuilder.hxx>
#include <NXOpen/CAM_Geometry.hxx>
#include <NXOpen/CAM_GeometryCiBuilder.hxx>
#include <NXOpen/CAM_GeometrySet.hxx>
#include <NXOpen/CAM_GeometrySetList.hxx>
#include <NXOpen/CAM_HolderSectionBuilder.hxx>
#include <NXOpen/CAM_HoleBossGeom.hxx>
#include <NXOpen/CAM_Inheritable2dLength.hxx>
#include <NXOpen/CAM_InheritableDoubleBuilder.hxx>
#include <NXOpen/CAM_InheritableFeedBuilder.hxx>
#include <NXOpen/CAM_InheritableFeedModeBuilder.hxx>
#include <NXOpen/CAM_InheritableIntBuilder.hxx>
#include <NXOpen/CAM_InheritableTextBuilder.hxx>
#include <NXOpen/CAM_InheritableToolDepBuilder.hxx>
#include <NXOpen/CAM_LayoutCiBuilder.hxx>
#include <NXOpen/CAM_LevelToLevel.hxx>
#include <NXOpen/CAM_LowerLimit.hxx>
#include <NXOpen/CAM_MaxCutTraverse.hxx>
#include <NXOpen/CAM_Method.hxx>
#include <NXOpen/CAM_MillCutParameters.hxx>
#include <NXOpen/CAM_MillOperationBuilder.hxx>
#include <NXOpen/CAM_MillToolBuilder.hxx>
#include <NXOpen/CAM_MillingToolBuilder.hxx>
#include <NXOpen/CAM_MillingTrackpointBuilder.hxx>
#include <NXOpen/CAM_MinCutVolume.hxx>
#include <NXOpen/CAM_MultiBladeBaseGeometry.hxx>
#include <NXOpen/CAM_MultiBladeSplittersGeometry.hxx>
#include <NXOpen/CAM_MultiDepthCut.hxx>
#include <NXOpen/CAM_MultipleStepoverBuilder.hxx>
#include <NXOpen/CAM_NCGroup.hxx>
#include <NXOpen/CAM_NCGroupBuilder.hxx>
#include <NXOpen/CAM_NCGroupCollection.hxx>
#include <NXOpen/CAM_NcmAvoidancePointBuilder.hxx>
#include <NXOpen/CAM_NcmClearanceBuilder.hxx>
#include <NXOpen/CAM_NcmPlanarBuilder.hxx>
#include <NXOpen/CAM_NcmPlanarEngRetBuilder.hxx>
#include <NXOpen/CAM_NcmSmoothingBuilder.hxx>
#include <NXOpen/CAM_NcmSubopBuilder.hxx>
#include <NXOpen/CAM_NcmTransfer.hxx>
#include <NXOpen/CAM_Notes.hxx>
#include <NXOpen/CAM_Operation.hxx>
#include <NXOpen/CAM_OperationBuilder.hxx>
#include <NXOpen/CAM_OperationCollection.hxx>
#include <NXOpen/CAM_OperationDisplayOptionsBuilder.hxx>
#include <NXOpen/CAM_OrientGeometry.hxx>
#include <NXOpen/CAM_OutputUncutRegions.hxx>
#include <NXOpen/CAM_ParamBuilder.hxx>
#include <NXOpen/CAM_PathDisplayColors.hxx>
#include <NXOpen/CAM_PlanarOperationBuilder.hxx>
#include <NXOpen/CAM_PostEventsCiBuilder.hxx>
#include <NXOpen/CAM_SmallAreaAvoidance.hxx>
#include <NXOpen/CAM_Splitter.hxx>
#include <NXOpen/CAM_SplitterList.hxx>
#include <NXOpen/CAM_SpunOutlineGeom.hxx>
#include <NXOpen/CAM_SteepContainment.hxx>
#include <NXOpen/CAM_StepoverBuilder.hxx>
#include <NXOpen/CAM_StockPerPassBuilder.hxx>
#include <NXOpen/CAM_Tool.hxx>
#include <NXOpen/CAM_ToolAxisBase.hxx>
#include <NXOpen/CAM_ToolAxisChange.hxx>
#include <NXOpen/CAM_ToolAxisFixed.hxx>
#include <NXOpen/CAM_ToolAxisTilt.hxx>
#include <NXOpen/CAM_ToolBuilder.hxx>
#include <NXOpen/CAM_ToolChangeCiBuilder.hxx>
#include <NXOpen/CAM_ToolPathEditorBuilder.hxx>
#include <NXOpen/CAM_ToolPathSplitParametersBuilder.hxx>
#include <NXOpen/CAM_Topology.hxx>
#include <NXOpen/CAM_TrochoidalSettings.hxx>
#include <NXOpen/CAM_Ude.hxx>
#include <NXOpen/CAM_UdeList.hxx>
#include <NXOpen/CAM_UdeSet.hxx>
#include <NXOpen/CAM_UpDownCutting.hxx>
#include <NXOpen/CAM_ZAxisSmoothing.hxx>
#include <NXOpen/Direction.hxx>
#include <NXOpen/Expression.hxx>
#include <NXOpen/ExpressionCollection.hxx>
#include <NXOpen/Face.hxx>
#include <NXOpen/FaceDumbRule.hxx>
#include <NXOpen/Features_Brep.hxx>
#include <NXOpen/Features_FeatureCollection.hxx>
#include <NXOpen/NXObject.hxx>
#include <NXOpen/ObjectList.hxx>
#include <NXOpen/Part.hxx>
#include <NXOpen/PartCollection.hxx>
#include <NXOpen/PartLoadStatus.hxx>
#include <NXOpen/Plane.hxx>
#include <NXOpen/PlaneCollection.hxx>
#include <NXOpen/Point.hxx>
#include <NXOpen/ScCollector.hxx>
#include <NXOpen/ScRuleFactory.hxx>
#include <NXOpen/SelectTaggedObjectList.hxx>
#include <NXOpen/SelectionIntentRule.hxx>
#include <NXOpen/Session.hxx>
#include <NXOpen/SmartObject.hxx>
#include <NXOpen/TaggedObject.hxx>
#include <NXOpen/Unit.hxx>
#include <NXOpen/UnitCollection.hxx>
#include <NXOpen/CAM_UpDownCutting.hxx>
#include <NXOpen/CAM_VolumeBased25DMillingOperation.hxx>
#include <NXOpen/CAM_VolumeBased25DMillingOperationBuilder.hxx>
#include <NXOpen/CAM_ZAxisSmoothing.hxx>
#include <NXOpen/CAM_FeatureGeometry.hxx>
#include <NXOpen/CAM_LevelToLevel.hxx>
#include <NXOpen/CAM_ZAxisSmoothing.hxx>
#include <NXOpen/CAM_ZLevelMilling.hxx>
#include <NXOpen/CAM_ZLevelMillingBuilder.hxx>
#include <NXOpen/TransientObject.hxx>
#include <NXOpen/TaggedObject.hxx>
#include <NXOpen/libnxopencpp_exports.hxx>


#include <iostream>
#include "uf_all.h"
#include "HuNXOpen.h"
#include "uf_cam_all.h"

class MillingFactory
{
public:

    NXOpen::Session* theSession = NXOpen::Session::GetSession();
    NXOpen::Part* workPart = theSession->Parts()->Work();
    NXOpen::Part* displayPart = theSession->Parts()->Display();
    NXOpen:: UI* theUI = NXOpen::UI::GetUI();
    

};

#endif // !MILLINGFACTORY_H

